工厂模式的组合,避免客户端对不同类型的逻辑判断

建议先看工厂模式抽象工厂模式

核心改动

将客户端的判断逻辑放到工厂类中。

需要这种组合的原因

工厂模式抽象工厂模式中已经强调过了,在新增数据模型类型时,客户端仍然需要对模型类型进行判断。而我们知道,简单工厂模式能够把客户端的逻辑判断放到工厂类中,所以使用组合方式能够使变动对客户端透明。

如何在工厂类中避免复杂的if判断或switch判断

既然要使用简单工厂方法把客户端的判断放到工厂类中,那么必然会产生大量的if和switch判断,可以使用“注册+反射”的方式避免。

“注册”只在配置文件中注册类名,“反射”是利用jdk的反射机制构建注册的类。

使用配置文件就不存在增加类后会侵入工厂类代码的情况了。

这种方式简化了代码的处理,但是会增加工程部署的复杂性,因此使用者需要trade off。